// 用于消费的数据

/**
 * 自定义可写流
 *  1- 继承 stream 模块的 Writeable
 *  2- 重写 _write 方法, 调用 write 执行写入
 */

const { Writable } = require('stream')
const fs = require('fs')

class MyWriteable extends Writable {
  constructor() {
    super()
  }
  _write(chunk, encode, callback) {
    // 标准输出
    process.stdout.write(chunk.toString() + '<---')
    // 写完之后再调用 callback, 所以放在一个异步操作里 nextTick
    process.nextTick(callback)
  }
}

let myWriteable = new MyWriteable()
// let rs = fs.readFileSync('./test.txt') // 不推荐使用.

let rs = fs.createReadStream('./test.txt', { encoding: 'utf-8' })
rs.on('data', function (chunk) {
  //   console.info(chunk) // 读取到的数据
  myWriteable.write(chunk, 'utf-8', () => {
    console.info('Done!')
  })
})

/**
 * 可写流事件
 *  pipe 事件: 可读流调用 pipe() 方法时 触发
 *  unpipe事件: 可读流调用 unpipe() 方法时 触发
 */
